Pascal and the 1980's Language Wars

Mark Leighton Fisher on 2003-12-24T01:26:33

(This was written as a comment for Jerry Pournelle's daybook, but you may find it of interest.)

As far as I recall, Pascal implementations of that era also suffered from their lack of software engineering features, most notably general library facilities and linkage to other languages. Some Pascal implementations had no support for separate compilation or library construction, forcing each program to stand alone. Real, practical engineering doesn't require designing all your own bricks, transistors, or springs, yet Pascal implementations of that era often made it easier to design your own objects than to reuse someone else's. There was a story that went around (possibly apocryphal) of a Unix kernel reimplementation in Pascal in one huge file that took 45 minutes to recompile at a time when the original Unix C sources took around 10-15 minutes to recompile.

C, from its first wide acceptance in Unix Version 6, supported library creation and maintenance along with linking to other languages. Real-life non-embedded software engineering does lots of combining of pre-existing parts, which Pascal implementations of that era made unnecessarily complicated. I've become significantly more productive since Perl5 came out, because the Comprehensive Perl Archive Network's Perl5 module library has modules for about any common task - I've used the text template, Web, and database modules extensively.

Pascal's additional range-checking did hurt it in the language wars, but the lack of library modularization facilities was also a factor - an important factor to those of us who were realizing the benefits of code reuse long before the advent of widely-used object-oriented languages like C++.